perm filename FOO.LOS[E,ALS] blob sn#132445 filedate 1974-11-29 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00004 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	TITLE	MICDMP
C00008 00003	A←1
C00009 00004	LPDL==10
C00025 ENDMK
C⊗;
TITLE	MICDMP

APR==0
PI==4
TTY==120

EXTERNAL DDT

;PETIT CHANNEL DEFINITIONS
PMP←500
IBM←504

;PMP CONI BITS
;LEFT HALF
CHLNXM←←200000		;CHANNEL NXM
SELERR←←40000		;SELECT ERROR
			;37700 ARE ADDRESS OF CURRENTLY SELECTED DEVICE
DSKPAR←←40		;CONTROL UNIT DETECTED PARITY ERROR (BIT 18 ALSO SET)
CORPAR←←20		;CHANNEL DETECTED PARITY ERROR (BIT 18 ALSO SET)
IDLEL←←10		;CHANNEL IS IDLE
IS←←4			;CHANNEL IS IN INITIAL SELECT STATE
REQ←←2			;CHANNEL IS IN REQUEST STATE
TRANS←←1		;CHANNEL IS IN TRANSFER STATE

;RIGHT HALF
PARERR←←400000		;CHANNEL OR CONTROL UNIT DETECTED PARITY ERROR
CMDEMP←←200000		;COMMAND HOLD EMPTY (OR UNUSUAL END)
IDLE←←100000		;IDLE STATE (SAME AS IDLEL)
UNEND←←40000		;UNUSUAL END (NXM,SELERR,BUSY,UNIT CHECK,DATA CHAIN ERR)
NEWST←←20000		;CHANNEL HAS NEW STATUS
ATTN←←10000		;ATTENTION
STMOD←←4000		;STATUS MODIFIER
CUEND←←2000		;CONTROL UNIT END
BUSY←←1000		;DEVICE BUSY (IF STMOD THEN CU BUSY)
CHNEND←←400		;CHANNEL END
DEVEND←←200		;DEVICE END
UCHK←←100		;UNIT CHECK
UNXCPT←←40		;UNIT EXCEPTION
ACTIVE←←20		;CHANNEL IS REQUESTING AN INTERRUPT

;PMP CONO BITS (ENABLE INTERRUPT CONDITIONS)
EPAR←←400000		;DISK OR CORE PARITY ERROR
ECMDEM←←200000		;COMMAND HOLD EMPTY
EIDLE←←100000		;IDLE
EUNEND←←40000		;UNUSUAL END
ENEWST←←20000		;NEW STATUS
EATTN←←10000		;ATTENTION
ESTMOD←←4000		;STATUS MODIFIER
ECUEND←←2000		;CONTROL UNIT END
EBUSY←←1000		;BUSY
ECHEND←←400		;CHANNEL END
EDEVEN←←200		;DEVICE END
EUCHK←←100		;UNIT CHECK
EUNXCP←←40		;UNIT EXCEPTION

;DATAO PMP,WCMA
;DATAI IBM,MA

;IBM CONO BITS (FOR CLEARING AND RESETTING THE CHANNEL)
CUNEND←←4000		;CLEAR UNUSUAL END
CACTIV←←400		;CLEAR ACTIVE
CNEWST←←200		;CLEAR NEW STATUS
CSTATU←←40		;CLEAR STATUS REGISTER
CCMDHO←←20		;CLEAR COMMAND HOLD LOADED
SCMDHO←←10		;SET COMMAND HOLD LOADED
RSTCHN←←1		;RESET CHANNEL

;IBM DATAO BITS (SETS COMMAND HOLD LOADED AND LOADS COMMAND HOLD)
;17,,740000 ARE THE DEVICE ADDRESS
NWCMA←←20000		;THIS COMMAND NEEDS A WCMA (DOES A MEMORY XFER)
BYTE4←←10000		;4 BYTE MODE
CBYTES←←4000		;COUNT BYTES
CHAIN←←2000		;COMMAND CHAINING
SKMON←←1000		;SKIP IF STATUS MOD ON
SKMOFF←←400		;SKIP IF STATUS MOD OFF
;377 ARE THE COMMAND
A←1
B←2
C←3
D←4
E←5
T←6
TT←7
TTT←10

P←17

	JRST DDT
GO:	CONO PI,711400
	CONO APR,675550
	MOVE P,[-LPDL,,PDL-1]
	PUSHJ P,BLAST		;RESET THE CHANNEL
	DATAO PMP,XWCMA
	DATAO IBM,RCMD
	CONSO PMP,NEWST
	JRST .-1
	CONI PMP,T		;GET THE STATUS
	TDNE T,[CHLNXM!SELERR,,PARERR!UNEND!ATTN!STMOD!CUEND!BUSY!UCHK!UNXCPT]
	JRST LOSE
	TRC T,CHNEND!DEVEND
	TRCE T,CHNEND!DEVEND
	JRST LOSE
	DATAO TTY,BLAST1
	JRST .

BLAST:	CONO IBM,CUNEND!CACTIV!CNEWST!CSTATU!CCMDHO
	MOVEI T,3
BLAST1:	MOVEI TT,1015
	CONO IBM,RSTCHN
	SOJG TT,.
	SOJG T,BLAST1
DING:	POPJ P,7

LOSE:	DATAO TTY,DING
	JRST 4,GO
LPDL==10
PDL:	BLOCK LPDL

RCMD:	<14⊗=17>!NWCMA!BYTE4!6
XWCMA:	0,,1000		;DATA TRANSFER WCMA

	BLOCK 1000	;ENOUGH ROOM TO GET US TO 1000
	BLOCK 20000	;ENOUGH ROOM FOR MICROSTORE

END	GO